/*
 * 版权所有(C)，上海海鼎信息工程股份有限公司，lizhixing，所有权利保留。
 * <p>
 * 项目名：	rabbit-demo
 * 文件名：	MsgReceiver
 * 模块说明：
 * 修改历史：
 * 2022/7/24 - lizhixing - 创建。
 */
package com.lovely602.rabbit.receiver;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;

/**
 * @author lizhixing
 */
public class MsgReceiver {

  public static void main(String[] args) {
    // 初始化连接工厂
    ConnectionFactory connectionFactory = new ConnectionFactory();
    connectionFactory.setHost("localhost");
    Connection connection = null;
    Channel channel = null;
    try {
      // 创建连接
      connection = connectionFactory.newConnection();
      // 创建消息通道
      channel = connection.createChannel();
      String queueName = "myQueue";
      // 声明通道
      channel.queueDeclare(queueName, false, false, false, null);
      // 创建消费者
      DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
        @Override
        public void handleDelivery(String consumerTag, Envelope envelope,
            AMQP.BasicProperties properties, byte[] body) throws IOException {
          System.out.println("msg: " + new String(body));
        }
      };
      channel.basicConsume(queueName, true, defaultConsumer);
    } catch (IOException e) {
      e.printStackTrace();
    } catch (TimeoutException e) {
      e.printStackTrace();
    } finally {
      // 关闭通道
      // try {
      // // 关闭通道
      // if (channel != null) {
      // channel.close();
      // }
      // // 关闭连接
      // if (connection != null) {
      // connection.close();
      // }
      // } catch (IOException e) {
      // e.printStackTrace();
      // } catch (TimeoutException e) {
      // e.printStackTrace();
      // }
    }

  }
}
